package com.ala4.oxcafe.properties;

import com.ala4.oxcafe.constants.CoreConstants;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 自定义认证配置类
 *
 * @author PING
 * @version 1.0
 * @date 2024/12/24 13:52
 */
@Data
@Component
@ConfigurationProperties(prefix = CoreConstants.SYSTEM_NAME + ".security")
public class SecurityProperties {

    /**
     * 不需要认证的路径
     */
    private List<String> ignoreUriList;

    /**
     * token有效期时长 单位:秒
     */
    private Long tokenExpiresIn = 3600L;

    /**
     * token是否自动续期
     */
    private Boolean tokenRenewal = true;

    /**
     * 是否允许同账户多终端登录
     */
    private Boolean soloLogin = false;

    /**
     * 是否开启apiUrl鉴权
     */
    private Boolean apiUrlAuthentication = false;

    /**
     * 是否开启验证码校验
     */
    private Boolean captchaAuthentication = false;

    /**
     * 验证码超时时间 单位:秒
     */
    private Long captchaTimeout = 300L;

    /**
     * 密码登录url地址
     */
    private String passwordLoginUrl = "/auth/password-login";

    /**
     * 微信登录url地址
     */
    private String wxLoginUrl = "/auth/wx-code-login";

    /**
     * 登出url地址
     */
    private String logoutUrl = "/auth/logout";

    /**
     * 验证码url地址
     */
    private String captchaUrl = "/auth/captcha-code";

    /**
     * 登录用户名参数-字段名
     */
    private String usernameParameter = "loginAccount";

    /**
     * 登录密码参数-字段名
     */
    private String passwordParameter = "password";

    /**
     * 微信登录code参数-字段名
     */
    private String weChatParameter = "weChatCode";

    /**
     * token参数-字段名
     */
    private String bearerTokenHeaderName = "Authorization";

}
